package com.cuz.daileetcode.bat100;

import java.util.Arrays;

public class 能力差值k最多的比赛场数 {


    public static int solution1(int[] arr, int k) {
        if (arr == null || arr.length <= 1) {
            return 0;
        }
        Arrays.sort(arr);
        if (k > arr[arr.length - 1] - arr[0]) {
            return 0;
        }
        int count = 0;
        int slow = 0;
        int fast = 0;
        //hasUsed[index] index 号选手是否以及参与的比赛，已经被使用了
        boolean[] hasUsed = new boolean[arr.length];
        while (fast < arr.length && slow < arr.length) {
            //slow 已经使用了
            if (hasUsed[slow]) {
                slow++;
            } else if (slow >= fast) {
                //slow 和 fast 是同一个人 那么fast++；
                //slow 在fast前面 那么fast++
                fast++;
            } else {
                //能力差值刚好为k
                if (arr[fast] - arr[slow] == k) {
                    hasUsed[fast] = true;
                    fast++;
                    slow++;
                    count++;
                } else if (arr[fast] - arr[slow] > k) {//大于k
                    slow++;
                } else {
                    //小于k
                    fast++;
                }
            }
        }
        return count;
    }


}
